home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / NEWSOFT / AUGUST / WORKDISC / !Forthmacs / lib / interact < prev    next >
Text File  |  1997-04-18  |  868b  |  27 lines

  1. \ lib/interactive.fth defines a local forth interpreter loop
  2.  
  3. 0 pointer stack-buff
  4. variable exit-interact?
  5.  
  6. : use-local-stack    \ ( ??? -- )
  7.     stack-buff
  8.     ps-size 20 cells+ allocate abort" Can't allocate local stack" is stack-buff
  9.     stack-buff 3 cells+ !
  10.     sp0 @ stack-buff !  sp@ stack-buff cell+ !
  11.     exit-interact? @ stack-buff 2 cells+ ! exit-interact? off
  12.     stack-buff  ps-size 16 cells+ sp0 !
  13.     clear ;
  14. : use-old-stack        \ ( ??? -- )
  15.     stack-buff 2 cells+ @ exit-interact? !
  16.     stack-buff @ sp0 !  stack-buff cell+ @ sp! 
  17.     stack-buff 3 cells+ @
  18.     stack-buff free abort" Interact stack error"
  19.     is stack-buff ;
  20. : interpret-line    \ input-line ( -- ?? )
  21.     0. 0. 0 prompt 2drop 2drop drop         \ Hack to make showstack work
  22.     ??cr ." -ok- " tib 80 expect  tib  span @  evaluate ;
  23. : interact        \ ( -- )
  24.     use-local-stack
  25.     begin interpret-line exit-interact? @ until
  26.     use-old-stack ;
  27.